// This file was decompiled using VCSCM.ini published on 2021-01-30
{$CLEO .cs}

script_name 'dtch' 


:MAIN_5272
0001: wait 0 ms

00D6: if
00E0:   player $PLAYER_CHAR in_any_car
004D: jump_if_false @MAIN_5272

03C0: 0@ = actor $player_actor car_no_save
0006: 1@ = 2 // @ = int

//05F5: cleo_call @DETACHWHEEL 2 0@ 1 1@ 
//0AB1: call_scm_func @DETACHWHEEL 2 0@ 1 1@ // CarHandle, WheelNumber (1 - left front, 2 - left rear, 3 - right front, 4 - right rear), GetDetachedWheelStruct


:DETACHWHEEL  
00D6: if
0039: 1@ == 1
jf @DETACHWHEEL_LEFTREARCHECK
0006: 2@ = 4 // clone left front wheel
0006: 3@ = 0x2A5 // remove left front wheel's colision
0006: 4@ = 0x3A4 // hide left front wheel
jump @DETACHWHEEL_DETACHWHEEL
 
:DETACHWHEEL_LEFTREARCHECK
00D6: if
0039: 1@ == 2
jf @DETACHWHEEL_RIGHTFRONTCHECK
0006: 2@ = 6 // clone left rear wheel
0006: 3@ = 0x2A6 // remove left rear wheel's colision
0006: 4@ = 0x3AC // hide left rear wheel
jump @DETACHWHEEL_DETACHWHEEL
 
:DETACHWHEEL_RIGHTFRONTCHECK   
00D6: if
0039: 1@ == 3
jf @DETACHWHEEL_RIGHTREARCHECK
0006: 2@ = 1 // clone right front wheel
0006: 3@ = 0x2A7 // remove right front wheel's colision
0006: 4@ = 0x398 // hide right front wheel
jump @DETACHWHEEL_DETACHWHEEL
 
:DETACHWHEEL_RIGHTREARCHECK  
00D6: if
0039: 1@ == 4
jf @DETACHWHEEL_RETURN
0006: 2@ = 3 // clone right rear wheel
0006: 3@ = 0x2A8 // remove right rear wheel's colision
0006: 4@ = 0x3A0 // hide right rear wheel
 
:DETACHWHEEL_DETACHWHEEL
//////// Hiding original wheel (getting parameters):   
05E7: 5@ = vehicle 0@ struct 
0085: 6@ = 5@
// Offset:
// 0x398 ______ wheel_rf_dummy _________ right front wheel
// 0x39C ______ wheel_rm_dummy ________ right middle wheel
// 0x3A0 ______ wheel_rb_dummy ________ right rear wheel
// 0x3A4 ______ wheel_lf_dummy _________ left front wheel
// 0x3A8 ______ wheel_lm_dummy ________ left middle wheel
// 0x3AC ______ wheel_lb_dummy ________ left rear wheel
// 0x3B0 ______ bump_front_dummy _______ front bumper
// 0x3B4 ______ bump_rear_dummy _______ rear bumper
// 0x3B8 ______ wing_rf_dummy __________ right front wing
// 0x3BC ______ wing_rr_dummy _________ right rear wing
// 0x3C0 ______ door_rf_dummy _________ right front door
// 0x3C4 ______ door_rr_dummy _________ right rear door
// 0x3C8 ______ wing_lf_dummy __________ left front wing
// 0x3CC ______ wing_lr_dummy _________ left rear wing
// 0x3D0 ______ door_lf_dummy __________ left front door
// 0x3D4 ______ door_lr_dummy __________ left rear door
// 0x3D8 ______ bonnet_dummy__________ hood
// 0x3DC ______ boot_dummy ___________ trunk
// 0x3E0 ______ windscreen_dummy _______ windshield
005A: 6@ + = 4@
//0006: 7@ = 0
//0AC7: 8@ = var 7@ offset
//05E0: 6@ = read_memory 6@ size 4 virtual_protect 1


   
//05DF: write_memory 6@ size 1 value 0 virtual_protect 1


//05E2: call_function_return 0x6453B0 num_params 2 pop 2 $COORD_Y $COORD_X $GROUND

//05E2: call_function_return 0x6453B0 num_params 3 pop 3 8@ 0x59F1E0 6@  
//00D6: if
//8039: not 7@ == 0
//jf @DETACHWHEEL_RETURN


//////// Making clone of wheel:
// first parameter - collision and physics of component:
// 0 - 241, car_bumper
// 1 - 245, car_wheel
// 2 - 240, car_door
// 3 - 243, car_bonnet
// 4 - 244, car_boot
// 5 - 242, car_panel
// second parameter - vehicle component:
// CAR_NODE_NONE = 0
// CAR_WHEEL_RF = 1
// CAR_WHEEL_RM = 2
// CAR_WHEEL_RB = 3
// CAR_WHEEL_LF = 4
// CAR_WHEEL_LM = 5
// CAR_WHEEL_LB = 6
// CAR_BUMP_FRONT = 7
// CAR_BUMP_REAR = 8
// CAR_WING_RF = 9
// CAR_WING_RR = 10
// CAR_DOOR_RF = 11
// CAR_DOOR_RR = 12
// CAR_WING_LF = 13
// CAR_WING_LR = 14
// CAR_DOOR_LF = 15
// CAR_DOOR_LR = 16
// CAR_BONNET = 17
// CAR_BOOT = 18
// CAR_WINDSCREEN = 19
//05E4: call_method_return 0x59AAA0 struct 5@ num_params 2 pop 0 1 2@ 15@ 
//////// Hiding original wheel:
//000A: 7@ + = 0x02

//05DF: write_memory 7@ size 1 value 0 virtual_protect 1
//////// Removing original wheel's colision:
005A: 5@ + = 3@
05DF: write_memory 5@ size 1 value 1 virtual_protect 1 

:DETACHWHEEL_RETURN
//0AB2: ret 1 15@


004E: terminate_this_script
